package com.chixing.day15_map_file.work;

import java.io.*;

import java.util.*;

public class Count {
    //    统计一个文件calcCharNum.txt中各个字母出现次数：
//
//A(8),B(16),C(10)...,a(12),b(10),c(3)....，括号内代表字符出现次数;
        public static void main(String[] args) {
            /**
             * 1、该要求中没有中文字符，可以使用FileInputStrem
             * 2、A(8)这种可以看作是key-value，且没有KEY没有重复
             * 因此可以用HashMap作为数据接收
             * 3、先获得该key的vaule，如果存在的话value的值+1
             */
            int count = 0;
            File file = new File("E:\\test2\\calcCharNum.txt");
            try {
                FileInputStream fis = new FileInputStream(file);
                HashMap<String, Integer> map = new HashMap();
                // 读取文件
                int len = 0;
                while ((len = fis.read()) != -1) {
                    // 每次获取到的字母
                    char c = (char) len;
                    try {
                        // 通过每次的key的值获取它的value,如果key值没有时，会报空指针，所有要try,catch
                        // 当有值时，就可以获取到相应的值，在这里就可以把相同key的值累加
                        count = map.get(c + "");
                    } catch (Exception e) {
                        // 这里什么都不做
                    }
                    // 如果有它的key值对应的value值要加1,这里要注意重复字母的次数添加
                    map.put(c + "", count + 1);
                }
                fis.close();
                // 读取完后把结果打印出来 ，迭代器的使用
                Iterator it = map.entrySet().iterator();
                while (it.hasNext()) {
                    Map.Entry entry = (Map.Entry) it.next();
                    System.out.println(entry.getKey() + "(" + entry.getValue() + "),");
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
}





